package com.spring4.aop.aspectj.springaspectj;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

/**
 * 注意： 类上Aspect注解表明该类是一个Aspect（其实就是Advisor）
 * 该类无须实现任何接口，只需要定义一个方法（方法叫什么名字都无所谓），
 * 在方法上标注Around注解，在注解中使用AspectJ切点表达式。
 * 方法的参数中包括一个ProceedingJoinPoint对象，
 * 它在AOP中称为Joinpint（连接点），可以通过该对象获取方法的任何信息。
 * 如：方法名、参数等。
 * Created by lyc on 2016-04-04.
 */
@Component
@Aspect
public class TestAspectj {
    @Before("execution(* com.spring4.aop.aspectj.service.impl.HelloImpl.say(..))")
    public void Before(){
        System.out.println("this is Before");
    }
    @After("execution(* com.spring4.aop.aspectj.service.impl.HelloImpl.say(..))")
    public void After(){
        System.out.println("this is After");
    }
}
